// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
//
// #define MAX_TREES 100
//
// typedef struct TreeNode {
//     int data;
//     struct TreeNode *firstChild;  // 指向第一个孩子
//     struct TreeNode *nextSibling; // 指向下一个兄弟
// } TreeNode;
//
// typedef struct {
//     TreeNode *roots[MAX_TREES];  // 森林的根节点数组
//     int treeCount;               // 森林中树的数量
// } Forest;
//
// TreeNode* createNode(int data) {
//     TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
//     if (node == NULL) {
//         printf("内存分配失败\n");
//         exit(1);
//     }
//     node->data = data;
//     node->firstChild = NULL;
//     node->nextSibling = NULL;
//     return node;
// }
//
// void addChild(TreeNode* node,int childdata) {
//     TreeNode* newNode=createNode(childdata);
//     if(node->firstChild==NULL) {
//         node->firstChild=newNode;
//     }else {
//         TreeNode* p=node->firstChild;
//         while (p->nextSibling) {
//             p=p->nextSibling;
//         }
//         p->nextSibling=newNode;
//     }
// }
//
// void printTree(TreeNode *root) {
//     if (root == NULL) return;
//     printf("%d ", root->data);          // 访问当前节点
//     printTree(root->firstChild);       // 遍历孩子子树
//     printTree(root->nextSibling);      // 遍历兄弟子树
// }
//
// void freeTree(TreeNode *root) {
//     if (root == NULL) return;
//     freeTree(root->firstChild);   // 释放孩子子树
//     freeTree(root->nextSibling);  // 释放兄弟子树
//     free(root);
// }
//
// // 向森林中添加一棵树
// void addTreeToForest(Forest *forest, TreeNode *tree) {
//     if(forest->treeCount>=MAX_TREES) {
//         printf("数满了\n");
//         return;
//     }
//     forest->roots[forest->treeCount]=tree;
//     forest->treeCount++;
// }
//
// void printForest(Forest *forest) {
//     for(int i=0;i<forest->treeCount;i++) {
//         printf("第%d棵树: ",i+1);
//         printTree(forest->roots[i]);
//         printf("\n");
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//
//     // 构建一棵树
//     TreeNode *tree1 = createNode(1);  // 根节点A
//     addChild(tree1, 2);               // B是A的孩子
//     addChild(tree1, 3);               // C是A的孩子
//     addChild(tree1->firstChild, 4);   // D是B的孩子
//
//     // 构建另一棵树
//     TreeNode *tree2 = createNode(5);  // 根节点E
//     addChild(tree2, 6);               // F是E的孩子
//
//     // 构建森林
//     Forest forest;
//     forest.treeCount = 0;
//     addTreeToForest(&forest, tree1);
//     addTreeToForest(&forest, tree2);
//
//     // 打印森林
//     printForest(&forest);
//
//     // 释放内存
//     freeTree(tree1);
//     freeTree(tree2);
//
//     return 0;
// }